package utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.graphics.drawable.GradientDrawable;
import android.view.View;

/**
 * Create by: chenwei.li
 * Date: 2017/12/9
 * Time: 下午6:51
 * Email: lichenwei.me@foxmail.com
 */

public class DensityUtil {
    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 设置圆角的背景
     *
     * @param context 上下文
     * @param v       View
     */
    public static void shapeSolid(Context context, View v, int pos) {
        GradientDrawable gd = (GradientDrawable) v.getBackground();
        int strokeWidth = 1; // 1dp 边框宽度
        int roundRadius = 8; // 8dp 圆角半径
        int strokeColor = 0xffff4984;//边框颜色
        int fillColor = 0xffffffff;//内部填充颜色
        if (pos == 1) {
            strokeColor = 0xff02FF13;//边框颜色
            fillColor = 0xff02FF13;//内部填充颜色
        }
        gd.setColor(fillColor);
        gd.setCornerRadius(dp2px(context, roundRadius));
        gd.setStroke(dp2px(context, strokeWidth), strokeColor);
    }

    /**
     * 根据手机的分辨率dp 转成px(像素)
     */
    public static int dp2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    public static Bitmap roatePicture(boolean isLeftOrRight, Bitmap bitmap) {

        Camera  camera = new Camera();
        camera.save();

        Matrix matrix = new Matrix();

// rotate

        if (isLeftOrRight) {

            camera.rotateY(180);

        } else {

            camera.rotateX(180);

        }

        camera.getMatrix(matrix);

// 恢复到之前的初始状态。

        camera.restore();

// 设置图像处理的中心点

        matrix.preTranslate(bitmap.getWidth() >> 1, bitmap.getHeight() >> 1);

//    matrix.preSkew(10, 10);

        matrix.postTranslate(bitmap.getWidth(), bitmap.getHeight());

// matrix.postSkew(skewX, skewY);

// 直接setSkew()，则前面处理的rotate()、translate()等等都将无效。

// matrix.setSkew(skewX, skewY);

// 2.通过矩阵生成新图像(或直接作用于Canvas)

        Bitmap newBit = null;

        try {

// 经过矩阵转换后的图像宽高有可能不大于0，此时会抛出IllegalArgumentException

            newBit = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

        } catch (IllegalArgumentException iae) {

            iae.printStackTrace();

        }
        return newBit;

    }


}
